package com.freemalll.common.core.utils;

import com.freemalll.common.core.utils.sql.SqlUtil;
import com.freemalll.common.core.web.page.PageDomain;
import com.freemalll.common.core.web.page.TableSupport;

/**
 * 分页工具类
 * 
 * @author freemalll
 */
public class PageUtils
{
    /**
     * 设置请求分页数据
     * 注意：由于移除了 PageHelper 依赖，此方法现在只做参数验证
     * 实际分页逻辑需要在 Service 层使用 MyBatis-Plus 的分页插件实现
     */
    public static void startPage()
    {
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
        Boolean reasonable = pageDomain.getReasonable();
        
        // 参数验证
        if (pageNum == null || pageNum < 1) {
            pageNum = 1;
        }
        if (pageSize == null || pageSize < 1) {
            pageSize = 10;
        }
        if (pageSize > 1000) {
            pageSize = 1000; // 限制最大页面大小
        }
        
        // 将分页参数存储到 ThreadLocal 中，供 MyBatis-Plus 分页插件使用
        PageDomain.setCurrentPageNum(pageNum);
        PageDomain.setCurrentPageSize(pageSize);
        PageDomain.setCurrentOrderBy(orderBy);
        PageDomain.setCurrentReasonable(reasonable);
    }

    /**
     * 清理分页的线程变量
     */
    public static void clearPage()
    {
        // 清理 ThreadLocal 中的分页参数
        PageDomain.clearPage();
    }
}